\chapter{基本概念}

\section{工作站}

工作站是Manipula建模的环境。每个建模活动都发生在一个工作站中。建模活动开始时，需要新建或打开一个工作
站。建模活动结束时，保存和关闭该工作站。Manipula一次只能打开一个工作站。当要切换工作站时，需要先关闭
软件，再打开新的工作站。

一个工作站中包含一个建模活动的所有元素。常见的元素包括：机器人，工具，各种工件模型。

工作站中除了包含可视的元素之外，还包含机器人控制器及相关的任务及数据。

\section{机器人控制器及任务}
当导入一个机器人之后，除了在首页的布局面板中能看到机器人的模型元素之外，系统还会为其创建一个虚拟控制
器。这个虚拟控制器负责运行机器人的任务程序，规划执行机器人的运动，处理IO信号等。

虚拟控制器默认包含一个机器人任务。这个任务包含机器人的程序模块。Manipula的机器人控制器使用Tenon语
言编写机器人的程序，也可以导出其他机器人语言的程序。

控制器里的机器人任务是导入机器人时，随着虚拟控制器自动创建的，无需用户创建，也不能单独删除。当删除机
器人时，它关联的虚拟控制器和机器人任务也一起被删除。用户还可以在控制器里创建其他任务，与机器人任务同
时运行。

\section{工作站任务及任务数据}
每个虚拟控制器的任务在工作站的数据面板中对应着一个工作站任务。这个工作站任务包含着各种与控制器任务
相关的数据，包括：工具数据、工件数据、目标点、路径等。

这些数据在工作站中由用户用可视化交互的方式创建出来，再通过“同步”功能在工作站任务数据和控制器任务的程
序代码之间进行转换。

工作站有当前活跃任务，当进行与机器人任务相关的操作时，如示教目标点，系统会在当前活跃任务中进行。
用户可以在首页工具栏上切换当前活跃任务。

一个工作站任务中的数据只能使用或引用本任务中的其他数据，而不能使用其他任务中的数据。

\subsection{缺省任务}
当工作站新建立的时候，工作站内置一个缺省任务。缺省任务不对应任何一个机器人控制器，而是属于工作站。

缺省任务用于存放不属于任何机器人的数据。

\subsection{任务坐标系}
虽然工作站有一个唯一的世界坐标系，但是每个控制器都有自己的任务坐标系。

任务坐标系用于给机器人中的任务编程使用。也就是说，一个任务中的所有数据都是相对于这个任务所属的控制器
的任务坐标系来定义的，与世界坐标系无关。

机器人控制器在配置文件中保存着机器人的本体坐标系(base frame)，即机器人的底座中心点相对于它的任务坐标系的位姿。
（也就是说，机器人的任务坐标系可以和它的本体坐标系不重合。）这样就可以在运行任务程序时将程序数据
转换到机器人的本体坐标系里了。

任务坐标系的存在是为了方便机器人程序数据的定义，使数据与机器人的绝对位置无关，而只表示和机器人的相对位置。

当机器人移动位置时，只需要将任务坐标系和任务数据一起跟着移动，则所有的数据都不需要修改。

%当两个机器人想共享程序数据时，只需要将两个机器人的任务坐标系设置在相同的位置，它们所使用的数据即可通用。

\subsection{工具数据}
工具数据用来表示一个工具的TCP(Tool Center Point)相对于它的安装基座的位置。

当一个工具被安装到机器人上时，这个工具的工具数据会自动创建到机器人对应的工作站任务中。当工具被拆除时，对应的
工具数据不会被删除，因为有可能这个工具数据已经在运动指令中使用了。

每个任务都有一个默认的工具数据，称为tool0。它表示的是一个没有偏移量的工具，即对应于机器人的法兰盘中央的TCP.

每个任务都有一个活跃工具数据，当对机器人进行操作，如示教目标点时，会使用这个活跃工具数据。用户可以在
首页工具栏上切换当前活跃任务的活跃工具数据。

\subsection{工件数据}
工件数据用来给目标点提供一个局部坐标系。当用户要在一个工件上定义目标点时，一般来说需要先为这个工件定义
一个工件数据，即工件的局部坐标系。之后所有的目标点都相对于这个工件数据来定义。这样的好处是，当工件发生移动
或者需要校准时，只需要修改工件数据，而不需要修改所有的目标点。

工件数据是相对于任务坐标系定义的。

每个任务有一个默认的工件数据，称为wobj0。它表示一个没有偏移量的工件坐标系，位置与任务坐标系原点重合。

每个任务有一个活跃的工件数据，当进行相关操作时，如示教目标点，会使用这个活跃工件数据。用户可以在首页
工具栏上切换当前活跃工件数据。

\subsection{目标点}
目标点是机器人运动指令使用的目标，它用于定义机器人的TCP需要到达的位姿。

目标点是相对于工件坐标系定义的，所以目标点总是属于某一个工件数据。

\subsection{路径和指令}
路径表示一条机器人运动的轨迹，由多个指令组成。一条路径对应于Tenon程序中的一个同名函数。当使用“同步”功能时，
一条路径会生成一个同名的Tenon函数，函数的内容就是路径中所有的指令。

指令控制机器人的TCP走到一个目标点，除目标点之外，指令还包含各种参数，如：工具数据，速度，转角半径等。

